`&^` := proc (x, p) options `Maple Advisor Database 1.01 for Maple 6`, `Copyright (c) 1998 by Robert B. Israel. All rights reserved`; local n,d; if type(p,integer) or is(x>=0) then x^p elif type(p,float) then `&^`(x,convert(p,rational)) elif type(p,rational) then n:= numer(p); d:= denom(p); if is(x,real) then if type(n,even) then abs(x)^p elif type(d,odd) then signum(x)*abs(x)^p else surd(signum(x),d)*abs(x)^p fi else surd(x^n,d) fi else '`&^`(x,p)' fi end;